﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <!-- Documenting T:NAnt.Core.Tasks.SetEnvTask-->
  <head>
    <meta http-equiv="Content-Language" content="en-ca" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="../style.css" />
    <title>&lt;setenv&gt; Task</title>
  </head>
  <body>
    <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar">
      <tr>
        <td class="NavBar-Cell">
          <a href="http://nant.sourceforge.net">
            <b>NAnt</b>
          </a>
          <img alt="-&gt;" src="../images/arrow.gif" />
          <a href="../index.html">Help</a>
          <img alt="-&gt;" src="../images/arrow.gif" />
          <a href="../tasks/index.html">Task Reference</a>
          <img alt="-&gt;" src="../images/arrow.gif" /> &lt;setenv&gt;</td>
        <td class="NavBar-Cell" align="right">
                        v0.91-alpha2</td>
      </tr>
    </table>
    <h1>&lt;setenv&gt;</h1>
    <p class="topicstatus">[This is preliminary documentation and subject to change.]</p>
    <p> Sets an environment variable or a whole collection of them. Use an empty <code>value</code> attribute to clear a variable. </p>
    <p class="i2">
      <b>Note:</b>  Variables will be set for the current NAnt process and all child processes that NAnt spawns (compilers, shell tools, etc). If the intention is to only set a variable for a single child process, then using the <a href="../tasks/exec.html">&lt;exec&gt;</a> task and its nested <code>environment</code> element might be a better option. </p>
    <p class="i2">
      <b>Note:</b>  Expansion of inline environment variables is performed using the syntax of the current platform. So on Windows platforms using the string %PATH% in the <code>value</code> attribute will result in the value of the PATH variable being expanded in place before the variable is set. </p>
    <h3>Parameters</h3>
    <div class="table">
      <table>
        <tr>
          <th>Attribute</th>
          <th style="text-align: center;">Type</th>
          <th>Description</th>
          <th style="text-align: center;">Required</th>
        </tr>
        <tr>
          <td valign="top">dir</td>
          <td style="text-align: center;">directory</td>
          <td> The value for a directory-based environment variable. NAnt will convert it to an absolute path. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">file</td>
          <td style="text-align: center;">file</td>
          <td> The value for a file-based environment variable. NAnt will convert it to an absolute filename. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">name</td>
          <td style="text-align: center;">string</td>
          <td> The name of a single Environment variable to set </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">path</td>
          <td style="text-align: center;">&lt;path&gt;</td>
          <td> The value for a PATH like environment variable. You can use <code>:</code> or <code>;</code> as path separators and NAnt will convert it to the platform's local conventions. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">value</td>
          <td style="text-align: center;">string</td>
          <td> The literal value for the environment variable. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">failonerror</td>
          <td style="text-align: center;">bool</td>
          <td> Determines if task failure stops the build, or is just reported. The default is <b>true</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">if</td>
          <td style="text-align: center;">bool</td>
          <td> If <b>true</b> then the task will be executed; otherwise, skipped. The default is <b>true</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">unless</td>
          <td style="text-align: center;">bool</td>
          <td> Opposite of <code>if</code>. If <b>false</b> then the task will be executed; otherwise, skipped. The default is <b>false</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
        <tr>
          <td valign="top">verbose</td>
          <td style="text-align: center;">bool</td>
          <td> Determines whether the task should report detailed build log messages. The default is <b>false</b>. </td>
          <td style="text-align: center;">False</td>
        </tr>
      </table>
    </div>
    <h3>Nested Elements:</h3>
    <!--Array-->
    <!--NestedElementArray=T:NAnt.Core.Types.EnvironmentVariable-->
    <h4>
      <a id="variable">
      </a>
                    &lt;variable&gt;
                </h4>
    <div class="nested-element">
      <p> Represents an environment variable. </p>
      <h3>Parameters</h3>
      <div class="table">
        <table>
          <tr>
            <th>Attribute</th>
            <th style="text-align: center;">Type</th>
            <th>Description</th>
            <th style="text-align: center;">Required</th>
          </tr>
          <tr>
            <td valign="top" class="required">name</td>
            <td style="text-align: center;">string</td>
            <td> The name of the environment variable. </td>
            <td style="text-align: center;">True</td>
          </tr>
          <tr>
            <td valign="top">dir</td>
            <td style="text-align: center;">directory</td>
            <td> The value for a directory-based environment variable. NAnt will convert it to an absolute path. </td>
            <td style="text-align: center;">False</td>
          </tr>
          <tr>
            <td valign="top">file</td>
            <td style="text-align: center;">file</td>
            <td> The value for a file-based environment variable. NAnt will convert it to an absolute filename. </td>
            <td style="text-align: center;">False</td>
          </tr>
          <tr>
            <td valign="top">if</td>
            <td style="text-align: center;">bool</td>
            <td> Indicates if the environment variable should be passed to the external program. If <b>true</b> then the environment variable will be passed; otherwise, skipped. The default is <b>true</b>. </td>
            <td style="text-align: center;">False</td>
          </tr>
          <tr>
            <td valign="top">path</td>
            <td style="text-align: center;">&lt;path&gt;</td>
            <td> The value for a PATH like environment variable. You can use <code>:</code> or <code>;</code> as path separators and NAnt will convert it to the platform's local conventions. </td>
            <td style="text-align: center;">False</td>
          </tr>
          <tr>
            <td valign="top">unless</td>
            <td style="text-align: center;">bool</td>
            <td> Indicates if the environment variable should not be passed to the external program. If <b>false</b> then the environment variable will be passed; otherwise, skipped. The default is <b>false</b>. </td>
            <td style="text-align: center;">False</td>
          </tr>
          <tr>
            <td valign="top">value</td>
            <td style="text-align: center;">string</td>
            <td> The literal value for the environment variable. </td>
            <td style="text-align: center;">False</td>
          </tr>
        </table>
      </div>
      <h3>Nested Elements:</h3>
      <!--Element-->
      <h4>
        <a id="path">
        </a>
                    &lt;<a href="../types/path.html">path</a>&gt;
                </h4>
      <div class="nested-element"> Sets a single environment variable and treats it like a PATH - ensures the right separator for the local platform is used. <p /></div>
      <h4>
        <a id="path">
        </a>
                    &lt;/<a href="../types/path.html">path</a>&gt;
                </h4>
    </div>
    <h4>
      <a id="variable">
      </a>
                    &lt;/variable&gt;
                </h4>
    <h3>Examples</h3>
    <ul class="examples">
      <li>
        <p>Set the MONO_PATH environment variable on a *nix platform.</p>
        <pre class="code">
  &lt;setenv name=="MONO_PATH" value="/home/jimbob/dev/foo:%MONO_PATH%"/&gt;
  </pre>
      </li>
      <li>
        <p>Set a collection of environment variables. Note the nested variable used to set var3.</p>
        <pre class="code">
  &lt;setenv&gt;
          &lt;variable name="var1" value="value2" /&gt;
          &lt;variable name="var2" value="value2" /&gt;
          &lt;variable name="var3" value="value3:%var2%" /&gt;
  &lt;/setenv&gt;
  </pre>
      </li>
      <li>
        <p>Set environment variables using nested path elements.</p>
        <pre class="code">
  &lt;path id="build.path"&gt;
         &lt;pathelement dir="c:/windows" /&gt;
         &lt;pathelement dir="c:/cygwin/usr/local/bin" /&gt;
     &lt;/path&gt;
  &lt;setenv&gt;         
          &lt;variable name="build_path" &gt;
                 &lt;path refid="build.path" /&gt;
          &lt;/variable&gt;
          &lt;variable name="path2"&gt;
             &lt;path&gt;
                 &lt;pathelement dir="c:/windows" /&gt;
                 &lt;pathelement dir="c:/cygwin/usr/local/bin" /&gt;
             &lt;/path&gt;
          &lt;/variable&gt;
  &lt;/setenv&gt;    
  </pre>
      </li>
    </ul>
    <h3>Requirements</h3>
    <div style="margin-left: 20px;">
      <b>Assembly:</b> NAnt.Core (0.91.3881.0)
            </div>
  </body>
</html>